Currently if a test script adds a trap on `EXIT` to run some cleanup, it
will stomp on the existing trap to run `save_core()`. Allow for scripts
to append actions that will run on exit by introducing an array that
will be iterated over by a single exit runner.
Closes: #1799
Approved by: cgwalters
fi
. ${test_srcdir}/libtest-core.sh
+# Array of expressions to execute when exiting. Each expression should
+# be a single string (quoting if necessary) that will be eval'd. To add
+# a command to run on exit, append to the libtest_exit_cmds array like
+# libtest_exit_cmds+=(expr).
+libtest_exit_cmds=()
+run_exit_cmds() {
+ for expr in "${libtest_exit_cmds[@]}"; do
+ eval "${expr}" || true
+ done
+}
+trap run_exit_cmds EXIT
+
save_core() {
if [ -e core ]; then
cp core "$test_srcdir/core"
fi
}
-
-trap save_core EXIT;
+libtest_exit_cmds+=(save_core)
test_tmpdir=$(pwd)
case "${TEST_SKIP_CLEANUP:-}" in
no|"")
- trap _mount_cleanup EXIT
+ libtest_exit_cmds+=(_mount_cleanup)
;;
err)
trap _mount_cleanup ERR
cleanup_fuse() {
fusermount -u ${test_tmpdir}/mnt || true
}
-trap cleanup_fuse EXIT
+libtest_exit_cmds+=(cleanup_fuse)
assert_file_has_content mnt/firstfile first
echo "ok mount"